package com.crazybytex.fragment.bytearraypage;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * @author 程序员潇然 https://crazybytex.com/
 * @Date 2022/7/29 17:32
 * @Description 有的时候可能需要对字节数组进行分页, 手动分页比较啰嗦
 * 可以借助于ByteArrayInputStream 写入缓冲区的形式 对数组进行分页
 **/
public class ByteArrayPage {
    public static void main(String[] args) throws IOException {


        Path path = Paths.get("C:\\Users\\crazybytex\\Desktop\\aaaa.jpg");
        byte[] contents = Files.readAllBytes(path);

        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(contents);
        //缓冲区大小 (每个报文数据区大小)
        byte[] flush = new byte[1024];

        int pageNum = 0;

        while ((byteArrayInputStream.read(flush)) != -1) {
            pageNum++;
            //写入
            //对数组做一些事情 flush;
            //不过需要注意实际使用的时候，最后一个分组数据未满的情况，那样将会有残留的数据
            //比如记录每次读取的length，使用的时候根据每次读取到的length处理数据
            //或者每次处理之后，都清空`flush`数组
            //详情看下byteArrayInputStream.read(flush)的方法注释就明白了
        }

    }
}
